//axios基础封装
import axios from 'axios'
import 'element-plus/es/components/message/style/css'
import { useUserStore } from '@/stores/user'
import { ElMessage } from 'element-plus'
import router from '@/router'

const httpInstance =  axios.create({
    baseURL: 'https://pcapi-xiaotuxian-front-devtest.itheima.net',
    timeout: 50000
})
//请求拦截器
httpInstance.interceptors.request.use(config => {
  //从pinia中获取token
  const userStore = useUserStore()
  const token = userStore.userInfo.token
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
    // console.log('请求拦截器',config)
    return config
}), e => {
    return Promise.reject(e)
}

//响应拦截器
httpInstance.interceptors.response.use(res => {
    // console.log('响应拦截器',res)
    return res.data
}), error => {
  const userStore = useUserStore()
    // 统一错误提示
    if (error.response) {
      // 如果服务器返回了响应，展示错误信息
      ElMessage({
        type: 'warning',
        message: error.response.data.message || '请求失败，请稍后重试',
      });
    } else if (error.request) {
      // 如果没有收到响应，说明可能是网络问题
      ElMessage({
        type: 'warning',
        message: '网络错误，请检查您的网络连接',
      });
    } else {
      // 其他错误
      ElMessage({
        type: 'warning',
        message: error.message || '系统错误，请稍后重试',
      });
    }
    //401token失效处理
    if (error.response.status === 401) {
      //清除用户信息
      userStore.clearUserInfo()
      //跳转到登录页
      router.push('/login')
    }
    return Promise.reject(error); // 返回错误
  };

export default httpInstance;
